import type {PageParam, PageResult} from '@vben/request';
import type {Dayjs} from 'dayjs';

import {requestClient} from '#/api/request';
export namespace PerBusinessFamilyEmigrationApi {
  /** 家庭成员移居国外业务表信息 */
  export interface BusinessFamilyEmigration {
    id: number; // 主键ID
    busiId?: string; // 业务主表ID
    familyEmigrationId: number; // 正式表ID，对应 per_family_emigration.id，用于修改/删除时关联
    employeeId?: number; // 人员ID，对应 per_employee.id
    relation: string; // 与本人关系（称谓）
    systemPersonId: number; // 系统人员ID，对应 system_person.id
    familyName: string; // 移居人姓名
    cardType: string; // 证件类型
    familyIdcard: string; // 移居人证件号码
    country: string; // 移居国家地区
    currentResidence: string; // 现居住地
    emigrationType: string; // 移居类别
    emigrationTime: string | Dayjs; // 移居时间
    remark: string; // 备注
    status: number; // 状态（1：有效，0：无效）
    changeType: string; // 变更类型（add：新增，update：修改，delete：删除）
    changeContent: string; // 变更内容(JSON格式，仅修改时保存差异)
    auditStatus: number; // 审核状态（0：草稿 1：审核中 2：审核完成）
    finalAuditStatus: number; // 最终审核状态（0：待审核 1：审核通过 2：审核不通过）
    auditTime: string | Dayjs; // 审核完成时间
    auditor: string; // 审核人
    auditComment: string; // 审核意见
    metadata: string; // 其他参数
  }
}

/** 查询家庭成员移居国外业务表分页 */
export function getBusinessFamilyEmigrationPage(data: PageParam,desensitize: boolean,encrypt: boolean) {
  return requestClient.post<PageResult<PerBusinessFamilyEmigrationApi.BusinessFamilyEmigration>>('/per/business-family-emigration/page', data,{ desensitize,encrypt });
}

/** 查询家庭成员移居国外业务表详情 */
export function getBusinessFamilyEmigration(params: { id: number }) {
  return requestClient.get<PerBusinessFamilyEmigrationApi.BusinessFamilyEmigration>(
    `/per/business-family-emigration/get?id=${params.id}`,
  );
}

/** 新增家庭成员移居国外业务表 */
export function createBusinessFamilyEmigration(data: PerBusinessFamilyEmigrationApi.BusinessFamilyEmigration) {
  return requestClient.post('/per/business-family-emigration/create', data);
}

/** 修改家庭成员移居国外业务表 */
export function updateBusinessFamilyEmigration(data: PerBusinessFamilyEmigrationApi.BusinessFamilyEmigration) {
  return requestClient.put('/per/business-family-emigration/update', data);
}

/** 删除家庭成员移居国外业务表 */
export function deleteBusinessFamilyEmigration(params: { id: number }) {
  return requestClient.delete(
    `/per/business-family-emigration/delete?id=${params.id}`,
  );
}

/** 批量删除家庭成员移居国外业务表 */
export function deleteBusinessFamilyEmigrationList(ids: number[]) {
  return requestClient.delete(`/per/business-family-emigration/delete-list?ids=${ids.join(',')}`)
}

/** 导出家庭成员移居国外业务表 */
export function exportBusinessFamilyEmigration(params: any) {
  return requestClient.download(
    '/per/business-family-emigration/export-excel',
    { params },
  );
}

/** 根据业务主表id去查询业务数据 */
export function getFamilyEmigrationBusiId(data: any) {
  return requestClient.post<PerBusinessFamilyEmigrationApi.BusinessFamilyEmigration>(
    '/per/business-family-emigration/getFamilyEmigrationBusiId',
    data,
  );
}

/** 获取当前登录人家庭成员移居国外情况 */
export function getCurrentFamilyEmigration(
  data,
  desensitize: boolean,
  encrypt?: boolean,
) {
  return requestClient.post<
    List<PerBusinessFamilyEmigrationApi.BusinessFamilyEmigration>
  >('/per/business-family-emigration/getCurrentFamilyEmigration', data, {
    desensitize,
    encrypt,
  });
}
